String.prototype.endsWith ( searchString [ , endPosition ] )
用來檢驗字串的結尾,參數有兩個"searchString(搜尋字串)"跟"[ , endPosition ]結尾位置",
來判定是不是用"searchString"做結尾,並用Boolean值(true/false)回傳結果,
"searchString"不一定是一個詞彙,也有可能是幾個字母一個符號或是不完整的一句話。
我在下面創立一個字串,並用各種方式檢驗結尾
後面有一個可用可不用的參數endPosition,表示字串的斷尾位置,結尾要從那個斷尾位置開始算,如下圖所示:
※補充說明[,Parameters(參數)表示這個參數的是可用可不用的,沒有也無所謂]爬蟲的時候可以用下面的網址去看其他人鐵人賽今天有沒有發文
let today = new Date();
document.querySelector(".qa-list:last-child .qa-list__info-time").innerText.endsWith(today.getDate())
String.prototype.includes ( searchString [ , position ] )
判定字串裡面有無"searchString",並用Boolean值(true/false)回傳結果,
後面有一個可用可不用的參數position,表示開始搜尋的索引位置,預設是0(也就是從頭開始搜尋)。
String.prototype.indexOf ( searchString [ , position ] )
用來查詢searchString在字串中的索引位置。
後面有一個可用可不用的參數position,表示開始搜尋的索引位置,預設是0(也就是從頭開始搜尋)。
像是下面,我建立一個字串,並透過改變搜尋的開始位置,去影響回傳結果。
String.prototype.lastIndexOf ( searchString [ , position ] )
跟indexOf類似只是是從後面搜尋過來,後面的參數也是改變從後面開始搜尋的位址。
String.prototype.localeCompare ( that [ , reserved1 [ , reserved2 ] ] )
比較字串跟that(另一個字串)的大小,主要是用來做排序的參考,
後面兩個參數是對應於Intl.Collator()兩個的參數,用來規範比較的基準。
String.prototype.match ( regexp )
驗證字串的內容是否符合regexp的規範,並將符合規範的字母化作陣列輸出。
※補充說明regexp(正規表達式)是被用來匹配字串中字元組合的模式。
String.prototype.matchAll ( regexp )
驗證字串的內容是否符合regexp的規範,並依符合regexp(正規表達式)的內容分組成陣列作輸出,符合regexp的第一組結果、第二組結果、第三組結果等方式。
String.prototype.normalize ( [ form ] )
將輸入的字串(Unicode編碼)依Unicode指定規範化重新編碼。
[ form ]是Unicode規範化形式,有下面四種“NFC”、“NFD”、“NFKC”或“NFKD”。
String.prototype.padEnd ( maxLength [ , fillString ] )
將字串用指定字母從最後一個字母開始填充到指定長度,
maxLength是希望字串最後的長度
[ , fillString ]填充到指定長度所用的文字,預設是一個空個" "
String.prototype.padStart ( maxLength [ , fillString ] )
跟padEnd類似,只不過是從頭開始填充字串長度
填充長度的很常看到運用在金融業上面,每個銀行的帳號長度不一致,所以都需要填充補齊。
String.prototype.repeat ( count )
字串重複count的次數。
String.prototype.replace ( searchValue, replaceValue )
取代指定字串,將字串第一個的searchValue改成replaceValue。
searchValue也可用RegExp(正規表達式)表示。
String.prototype.replaceAll ( searchValue, replaceValue )
跟上面類似不過是將字串所有的searchValue都改成replaceValue
String.prototype.search ( regexp )
跟indexOf很類似,只是searchString改成regexp,一樣回傳目標的索引值
String.prototype.slice ( start, end )
分割字串,依索引值去裁切字串。start之前的全捨棄,end之後的全捨棄,留下中間部分。
end如果沒給值,視同字串的長度-1(最後一個字母的索引值)
start的位置必須在end之前(end必定大於start),如果在之後或是一樣則會回傳空字串
String.prototype.split ( separator, limit )
依separator為切割點分割字串。
輸出是一個陣列,將切割的結果依續放進陣列中
若separator是空字串,整個字串會每個字母被逐一切割
若separator沒有值,則不會切割,並將字串轉成一個陣列。
limit表示切割的次數,也就是輸出陣列中的最大量,多的字串會全部捨棄。
String.prototype.startsWith ( searchString [ , position ] )
跟endsWith相似,只是是檢驗字串的開頭。
String.prototype.substring ( start, end )
跟slice相似,不是依索引值而是字母的順序,所以無法用負數去切割。
start跟end沒有前後限制,end可以比start大。
String.prototype.toLocaleLowerCase ( [ reserved1 [ , reserved2 ] ] )
將字串依當地語系轉成小寫字母,USA變成usa,我們基本都是用英文語系所以沒太大問題,如果是其他語系的國家會比較需要煩惱,後面的參數表示轉換得語系,不輸入即為當地語系。
String.prototype.toLocaleUpperCase ( [ reserved1 [ , reserved2 ] ] )
跟toLocaleLowerCase相似,只是轉大寫。
String.prototype.toLowerCase ( )
跟toLocaleLowerCase相似,只是不能調整語系。
String.prototype.toString ( )
回傳一個同樣的字串,常用來表示結果與目前輸入的字串相等。
String.prototype.toUpperCase ( )
跟toLocaleUpperCase相似,只是不能調整語系。
String.prototype.trim ( )
刪除字串兩端的空格(空白字符)。
String.prototype.trimEnd ( )
刪除字串結尾的空格(空白字符)
String.prototype.trimStart ( )
刪除字串開頭的空格(空白字符)
String.prototype.valueOf ( )
跟toString相同,
這種methed只會用在JavaScript內部,不會用在外部的code。
String.prototype [ @@iterator ] ( )
將字串轉換成迭代,並透過.value取出當下的值,.next呼叫下一個值。
const str = 'The quick red fox jumped over the lazy dog\'s back.';
const iterator = str[Symbol.iterator](); //將字串每個字母分割儲存
iterator.next() //進入第一個字母
iterator.value //叫出第一個字母
iterator.next() //進入第二個字母
iterator.value //叫出第二個字母
// ......
//直到所有字母被呼叫完
其實String的method不只這34種,不過很多都已經不推薦使用了,也不被放在EMCA裡面,只是部分瀏覽器還支援,鯊魚沒介紹的部分就不要去使用了,明天我們換其他基本型別的東西來介紹。
參考資料: